//
// Created by sally on 24-10-27.
//

#ifndef TIMERCONFIG_H
#define TIMERCONFIG_H

//定义第一个轮子的bit长度，即主动轮
#define TVR_BITS    8

//主动轮的刻度长度
#define TVR_SIZE    (1<<TVR_BITS)

//其它轮子都是6bit位数的，即从动轮都是6bit的
#define TNR_BITS    6
#define TNR_SIZE    (1<<TNR_BITS)

//掩码，取模和除法使用的
#define TVR_MASK    (TVR_SIZE-1) //减1是因为刻度是从0开始的
#define TNR_MASK    (TNR_SIZE-1)

//时间指针的移动都是在主动轮上的，因此我们需要获取到时间指针移动到哪了，当时间刻度，移动到了末尾时，会和掩码进行取模，将其重新映射到主动轮上
//还有一种情况时，从动轮往主动轮上映射，根据掩码来确定映射到的位置

#define  FIRST_INDEX(v)     ((v) & TVR_MASK)

//v是当前 tick 计数
#define  NTH_INDEX(v, n)    (((v) >> ( TVR_BITS +(n-1) * TNR_BITS)) & TNR_MASK)



#endif //TIMERCONFIG_H
